草庐IT

Java Class.isAssignableFrom 困惑

全部标签

c++ - 对非抛出函数的困惑

我有两个关于非抛出函数的问题:为什么要使函数不抛出?如何使函数不抛出?如果函数内的代码实际上可能会抛出,那么我是否仍应将其设置为非抛出?这是一个例子:voidswap(Typet1,Typet2)throw(){//swap}如果swap中的代码根本不会抛出,我还应该附加throw()吗?为什么? 最佳答案 throw()(或C++11中的noexcept)之所以有用,有两个原因:它允许编译器更积极地进行优化。它告诉函数使用者他们可以在他们自己的非抛出函数中使用这个函数。非抛出函数对于编写异常安全代码非常重要。例如,编写异常安全op

c++ - 我要声明部分特化的 friend 类吗? - 很困惑

我已经在这个问题上浪费了太多时间了。我正在尝试为节点和它们指向的类型使用两个不同的分配器来实现单个链表。以下代码一直在提示我在SingleListNode定义中部分特化了friend类声明:namespacecontainers{templateclassSingleList;//forwarddeclarationtemplate>classSingleListNode{templatefriendclassSingleList;//partiallyspecialized???//classdefinition};template,typenameNAlloc=std::alloc

c++ - 对C++多重继承感到困惑

我对C++的更高级功能有些陌生。昨天,我发布了以下问题,了解了虚拟继承和可怕的死亡钻石。InheritingfrombothaninterfaceandanimplementationC++我还通过其他链接了解到,多重继承通常是错误代码设计的标志,并且通常可以在不使用MI的情况下更好地实现相同的结果。问题是……对于以下问题,我不知道什么是更好的单继承方法。我想为两种类型的数字点定义一个接口(interface)。输入数字点和输出数字点。界面要简洁,只有访问信息所需的内容。当然,绝大多数属性对于这两种类型的数字点都是通用的。所以对我来说,这是一个明显的继承案例,而不是组合。我的接口(in

c++ - 对三角形缠绕和变换感到困惑

首先,我想为这么长的问题道歉。你不必阅读它。您可以直接跳到问题部分,然后在需要时查找详细信息(我已尝试提供尽可能多的信息,因为根据我的经验,代码太多总比代码太少好)。所以,...我对三角形缠绕和变换有点困惑,我以为我理解了。我正在尝试绘制一个定义如下的立方体:constfloata=0.5f;//halfofthecubesidelengthfloatpositions[nComponents]={//frontface-a,-a,-a,a,-a,-a,a,a,-a,-a,-a,-a,a,a,-a,-a,a,-a,//backface-a,-a,a,a,a,a,a,-a,a,-a,-a

c++ - 对数组参数感到困惑

这是C++Primer第5版中的练习,内容如下:Exercise6.24:Explainthebehaviorofthefollowingfunction.Ifthereareproblemsinthecode,explainwhattheyareandhowyoumightfixthem.voidprint(constintia[10]){for(size_ti=0;i!=10;++i)cout我在代码中找不到任何问题。这个练习的重点是什么? 最佳答案 普遍的问题是,在C++声明语法中,函数参数声明中的数组类型意味着一些不直观的东

c++ - 涉及STL排序算法的令人困惑的SegFault

我正在尝试使用STL重新创建编程明珠第15栏中的程序。我正在尝试使用字符串和索引vector创建后缀数组。我将我读取的单词列表记录在一个名为input的字符串中,该字符串充当我在程序开头从stdin读取的以''分隔的单词列表。在我到达代码的排序部分之前,一切都按预期工作。我想使用STL的排序算法,但我对我似乎正在创建的段错误感到完全困惑。我有:vectorwords;和全局变量stringinput;我定义了我的自定义比较函数:boolwordncompare(unsignedintf,unsignedints){intn=2;while(((f当我运行代码时:sort(words.b

c++ - 虚拟继承困惑

我正在阅读有关继承的内容,但我遇到了几个小时都无法解决的主要问题:给定一个类Bar是一个具有虚函数的类,classBar{virtualvoidCook();};有什么区别:classFoo:publicBar{virtualvoidCook();};和classFoo:publicvirtualBar{virtualvoidCook();};?数小时的谷歌搜索和阅读得到了很多关于它的用途的信息,但没有人真正告诉我两者之间的区别,只会让我更加困惑。 最佳答案 在功能方面,两个版本之间没有太大区别。在virtual继承的情况下,每个实

c++ - 对逗号在 C/C++ 中的工作方式有些困惑

这个问题在这里已经有了答案:HowdoestheCommaOperatorwork(9个回答)关闭7年前。我使用SO作为引用已经有一段时间了,但之前从未问过问题。我目前正在上大学C++类(class),并且还阅读了BjarneStroutstrup的编程:原理与实践,只是为了我自己的利益,因为我在这里看到了一个真正推荐它的问题的答案。我们目前在类里面介绍运算符,但我似乎无法理解逗号运算符在语句中的工作原理。一个例子是类(class)在线部分的示例问题,即使我编写了C程序并使用GDB来获取结果,我仍然会出错。问题是:Assumingx==16beforethefollowingexpre

c++ - 我很困惑! C++ 中的 Char、Char* 或 String

当我使用char或char*时,visualstudio2012(11)只计算最后一个字符,例如:#include#includeintmain(){usingnamespacestd;charchName='Alex';cout它只显示“x”。我用的是正确的字符串strName="Alex"但是在那些参数为字符的函数中,字符串不能作为参数传递。在这种情况下,VS编译器说字符串不能转换为int。还告诉我char和char*之间有什么区别。我是一名PHP开发人员,而C++是如此令人困惑。请帮助我。 最佳答案 char一次只能保留1个字

c++ - numeric_limits 中有错误还是我只是感到困惑?

我在调试一些涉及确定加法运算是否会下溢double的代码时遇到了一些奇怪的行为,至少在我看来是这样。这是一个示例程序,展示了我的发现。#include#includeusingstd::cout;usingstd::endl;usingstd::numeric_limits;intmain(){doublelowest=numeric_limits::lowest();booltruth=(lowest+10000)==lowest;cout当我执行这段代码时,结果为真。这是错误还是我只是sleep不足? 最佳答案 最小的doubl